package com.atguigu.gulimall.seckill.scheduled;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
//@EnableScheduling // 开启spring boot 的定时任务
@Slf4j
//@EnableAsync // 开启spring boot 的异步任务
public class HelloSchedule {

    /**
     * -@Scheduled 开启一个定时任务，cron 表达式在spring中只支持6位（没有年）
     * 周几的位置，1-7，周一到周日
     *
     * 如果定时任务执行的时间比较长，会导致定时任务同等被延迟。
     * 使用spring boot 的异步任务可以避免这种情况
     * 在类上添加注解@EnableAsync，方法上添加@Async可以实现异步任务
     * 配置文件中可以配置线程池的信息
     * # spring 异步任务线程池配置
     * spring.task.execution.pool.core-size=5
     * spring.task.execution.pool.max-size=50
     */
//    @Scheduled(cron = "* * * ? * *")
//    @Async
    public void r1(){
        log.info("hello...");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
